import request from './axios'

/**
 * 挂号管理API接口
 */
const registerApi = {
  /**
   * 根据ID获取挂号信息
   * @param {Number} id - 挂号ID
   * @returns {Promise}
   */
  getById: (id) => {
    return request.get(`/registers/id/${id}`)
  },

  /**
   * 获取所有挂号信息
   * @returns {Promise}
   */
  getAll: () => {
    return request.get('/registers')
  },

  /**
   * 根据条件查询挂号信息
   * @param {Object} params - 查询条件
   * @returns {Promise}
   */
  getByCondition: (params) => {
    return request.post('/registers/condition', params)
  },

  /**
   * 分页查询挂号信息
   * @param {Object} params - 查询参数对象，包含pageNum、pageSize等所有查询条件
   * @returns {Promise}
   */
  getByPage: (params = {}) => {
    return request.get('/registers/page', {
      params: {
        ...params
      }
    })
  },

  /**
   * 获取挂号总数
   * @returns {Promise}
   */
  countAll: () => {
    return request.get('/registers/count')
  },

  /**
   * 根据条件查询挂号总数
   * @param {Object} params - 查询条件
   * @returns {Promise}
   */
  countByCondition: (params) => {
    return request.post('/registers/count/condition', params)
  },

  /**
   * 新增挂号信息
   * @param {Object} data - 挂号信息
   * @returns {Promise}
   */
  save: (data) => {
    return request.post('/registers', data)
  },

  /**
   * 批量新增挂号信息
   * @param {Array} list - 挂号列表
   * @returns {Promise}
   */
  saveBatch: (list) => {
    return request.post('/registers/batch', list)
  },

  /**
   * 更新挂号信息
   * @param {Number} id - 挂号ID
   * @param {Object} data - 挂号信息
   * @returns {Promise}
   */
  updateById: (id, data) => {
    return request.put(`/registers/${id}`, data)
  },

  /**
   * 删除挂号信息
   * @param {Number} id - 挂号ID
   * @returns {Promise}
   */
  removeById: (id) => {
    return request.delete(`/registers/${id}`)
  },

  /**
   * 批量删除挂号信息
   * @param {Array} ids - 挂号ID列表
   * @returns {Promise}
   */
  removeByIds: (ids) => {
    return request.delete('/registers/batch', {
      params: {
        ids: ids.join(',')
      }
    })
  },
  
  /**
   * 根据病历号或姓名查询患者信息
   * @param {Object} params - 查询参数，包含caseNumber和realName
   * @returns {Promise}
   */
  patientSearch: (params) => {
    return request.post('/registers/patient/search', params)
  }
}

export default registerApi